package com.moli.iov.manager.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.moli.iov.manager.model.bo.RoleAuthsBo;
import com.moli.iov.manager.model.dto.AuthorityRoleQueryDto;
import com.moli.iov.manager.model.po.AuthorityRole;
import com.moli.iov.manager.model.po.AuthorityRoleAuth;
import com.moli.iov.rest.RestResponse;

import java.util.List;

/**
 * <p>
 * 角色表 服务类
 * </p>
 *
 * @author fudaohui
 * @since 2018-12-12
 */
public interface IAuthorityRoleService extends IService<AuthorityRole> {


    /**
     * 新增或者修改角色信息
     * @param authorityRole
     * @return
     */

     RestResponse saveOrUpdateRole(AuthorityRole authorityRole);


    /**
     * 根据id查询角色信息，不包含附带的权限数据
     * @param id
     * @return
     */
      RestResponse queryRoleById(long id);


    /**
     * 根据id删除角色，软删除
     * @param authorityRole 角色
     * @return
     */
     RestResponse deleteRoleById(AuthorityRole authorityRole);


    /**
     * 分页查询角色信息，不包含附加角色和权限信息
     * @param authorityRoleQueryDto
     * @return
     */
     IPage<AuthorityRole> queryRoleByPage(AuthorityRoleQueryDto authorityRoleQueryDto);


//    /**
//     * 根据roleid查询此角色所属的全量菜单和已经勾选的菜单列表
//     * isMemu 是否仅查询菜单，1是；其他，所有
//     * @return
//     */
//     RoleAuthsBo queryAuthsByRoleId(long roleId,int isMemu);

    /**
     * 根据role name查询该角色是否存在
     * @param authorityRole
     * @return
     */
    AuthorityRole queryRoleByname(AuthorityRole authorityRole);


    /**
     * 查询系统内置的角色信息
     *
     * @return
     */
    List<AuthorityRole> listDefalutRoles();



    /**
     * 查询已经建立的角色
     *
     * @return
     */
    List<AuthorityRole> listRoles();

}
